#日志打印器
'''
#1.编制装饰器（闭包函数）
def logger(func):
    def wrapper(*args):
        print('我准备开始计算：{}函数了'.format(func.__name__))
        #真正执行的业务函数
        func(*args)
        print('啊哈，我计算完了，给自己加个鸡腿！')
    return wrapper


#第一种方法
#2.定义一个业务函数
def add(x,y):
    print('{}+{}={}'.format(x,y,x+y))
#使用装饰器装饰函数，把函数名add作为参数传入到装饰器中。    
te = logger(add)        #调用logger函数
te(200,50)              #实现wrapper的调用
'''


#第二种方法
#语法糖@
def logger(func):
    def wrapper(*args):
        print('我准备开始计算：{}函数了'.format(func.__name__))
        #真正执行的业务函数
        func(*args)
        print('啊哈，我计算完了，给自己加个鸡腿！')
    return wrapper
@logger
def add(x,y):
    print('{}+{}={}'.format(x,y,x+y))
add(200,5)     #和普通调用业务函数的方式一致

#拓展：为什么不直接用函数封装，给它添加额外功能，而是要使用装饰器。
'''
因为装饰器可以实现代码的复用---一个模板，给多个业务函数添加额外功能。

'''







